package tests

import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
import org.scalatest.Suite
import comunicaciones.LlamadaLocal
import cliente_empresa.Cliente
import java.util.Date
import comunicaciones.LlamadaLargaDistancia
import planes.NumerosAmigos
import planes.HablateTodo
import planes.PrepagoLocal
import planes.PrepagoInternacional
import planes.CiudadesAmigas

@RunWith(classOf[JUnitRunner])
class TestCliente extends Suite{
  
  
  def testObtenerPrecioDeLlamadasDeUnClienteConPlanNumsAmigos(){
      var call  = new LlamadaLargaDistancia(8888888,300,"Quilmes","Ezpeleta","Argentina")// Llamadas de Febrero
      call.fecha = new Date(2013,2,1)
      var call2 = new LlamadaLargaDistancia(0606456,60,"Quilmes","Jiji","IslaFile")
      call2.fecha = new Date(2013,2,1)
      var call3  = new LlamadaLocal(42576677,1800)
      call3.fecha = new Date(2013,2,1)
      var call4 = new LlamadaLocal(42576677,1800)
      call4.fecha = new Date(2013,2,1)
      
      var planA = new NumerosAmigos()
      planA.numeros = List(0606456,42576677,1556194356)
      var client = new Cliente("",List(call,call2,call3,call4),List(planA))
      
      var total = client.cuantoDebePagarEnMes(2)
      println("Total a pagar: "+total+" con costo de planes: "+ (client.planes.count(c => true)* 10).toDouble)
      assert(total.round == 35)
  }
  
  def testObtenerPrecioDeLlamadasDeUnClienteConPlanNumsAmigosYHablateTodo(){
      var call  = new LlamadaLargaDistancia(8888888,300,"Quilmes","Ezpeleta","Argentina")// Llamadas de Febrero
      call.fecha.setMonth(2)
      call.fecha.setDate(5)
      var call2 = new LlamadaLargaDistancia(0606456,60,"Quilmes","Jiji","IslaFile")
      call2.fecha.setMonth(2)
      call2.fecha.setDate(2)
      var call3  = new LlamadaLocal(42576677,1800)
      call3.fecha.setMonth(2)
      call3.fecha.setDate(3)
      var call4 = new LlamadaLocal(42576677,1800)
      call4.fecha.setMonth(2)
      call4.fecha.setDate(4)
      
      var planA = new NumerosAmigos()
      planA.numeros = List(0606456,42576677,1556194356)
      var planH = new HablateTodo()
      var client = new Cliente("",List(call,call2,call3,call4),List(planA,planH))
      
      var total = client.cuantoDebePagarEnMes(2)
      println("Total a pagar: "+total+" con costo de planes: "+ (client.planes.count(c => true)* 10).toDouble)
      assert(total.round == 45)
  }
  
 def testObtenerPrecioDeLlamadasDeUnClienteConPlanNumsAmigosYHablateTodoYPrepagoLocal(){
      var call  = new LlamadaLargaDistancia(8888888,300,"Quilmes","Ezpeleta","Argentina")// Llamadas de Febrero
      call.fecha.setMonth(2)
      call.fecha.setDate(5)
      var call2 = new LlamadaLargaDistancia(0606456,60,"Quilmes","Jiji","IslaFile")
      call2.fecha.setMonth(2)
      call2.fecha.setDate(2)
      var call3  = new LlamadaLocal(42576677,1800)
      call3.fecha.setMonth(2)
      call3.fecha.setDate(3)
      var call4 = new LlamadaLocal(4225677,1800)
      call4.fecha.setMonth(2)
      call4.fecha.setDate(4)
      
      var planA = new NumerosAmigos()
      planA.numeros = List(0606456,42576677,1556194356)
      var planH = new HablateTodo()
      var planL = new PrepagoLocal(2)
      
      var client = new Cliente("",List(call,call2,call3,call4),List(planA,planH,planL))
      
      var total = client.cuantoDebePagarEnMes(2)
      println("Total a pagar: "+total+" con costo de planes: "+ (client.planes.count(c => true)* 10).toDouble)
      assert(total.round == 55)
  }
 
 def testObtenerPrecioDeLlamadasDeUnClienteConPlanNumsAmigosYHablateTodoYPrepagoLocalYPrepagoInternacional(){
      var call  = new LlamadaLargaDistancia(8888888,300,"Quilmes","Ezpeleta","Argentina")// Llamadas de Febrero
      call.fecha.setMonth(2)
      call.fecha.setDate(5)
      var call2 = new LlamadaLargaDistancia(0606456,60,"Quilmes","Jiji","IslaFile")
      call2.fecha.setMonth(2)
      call2.fecha.setDate(2)
      var call3  = new LlamadaLocal(42576677,1800)
      call3.fecha.setMonth(2)
      call3.fecha.setDate(3)
      var call4 = new LlamadaLocal(4225677,1800)
      call4.fecha.setMonth(2)
      call4.fecha.setDate(4)
      
      var planA = new NumerosAmigos()
      planA.numeros = List(0606456,42576677,1556194356)
      var planH = new HablateTodo()
      var planL = new PrepagoLocal(2)
      var planI = new PrepagoInternacional(2)
      
      var client = new Cliente("",List(call,call2,call3,call4),List(planA,planH,planL,planI))
      
      var total = client.cuantoDebePagarEnMes(2)
      println("Total a pagar: "+total+" con costo de planes: "+ (client.planes.count(c => true)* 10).toDouble)
      assert(total.round == 40)
  }
  
 def testObtenerPrecioDeLlamadasDeUnClienteConPlanNumsAmigosYHablateTodoYPrepagoLocalYPrepagoInternacionalYCiudadesAmigas(){
      var call  = new LlamadaLargaDistancia(8888888,300,"Quilmes","Ezpeleta","Argentina")// Llamadas de Febrero
      call.fecha.setMonth(2)
      call.fecha.setDate(1)
      var call2 = new LlamadaLargaDistancia(0606456,60,"Quilmes","Jiji","IslaFile")
      call2.fecha.setMonth(2)
      call2.fecha.setDate(2)
      var call3  = new LlamadaLocal(42576677,1800)
      call3.fecha.setMonth(2)
      call3.fecha.setDate(3)
      var call4 = new LlamadaLocal(4225677,1800)
      call4.fecha.setMonth(2)
      call4.fecha.setDate(4)
      
      var planA = new NumerosAmigos()
      planA.numeros = List(0606456,42576677,1556194356)
      var planH = new HablateTodo()
      var planL = new PrepagoLocal(2)
      var planI = new PrepagoInternacional(2)
      var planC = new CiudadesAmigas("Jiji")
      
      var client = new Cliente("",List(call,call2,call3,call4),List(planA,planH,planL,planI,planC))
      
      var total = client.cuantoDebePagarEnMes(2)
      println("Total a pagar: "+total+" con costo de planes: "+ (client.planes.count(c => true)* 10).toDouble)
      assert(total.round == 50)
  }
  

}